package com.awccis.admin.service;

import com.awccis.admin.model.merchant.MerchantBean;
import com.awccis.admin.model.pay.MerchantNeedPayBean;
import com.awccis.admin.model.pay.MerchantPaDetailInfo;
import com.awccis.admin.model.sorder.ServiceOrderBean;
import com.awccis.admin.model.sorder.ServiceTypeBean;
import com.sun.mail.imap.protocol.BODY;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author: txp
 * @date: 2018/5/30 on 下午4:12
 * @since: 1.0
 * @description:
 */
@Service
public interface AdminServiceOrderService {

    /**
     * 设置merchantInfo
     *
     * @param type         更改类型 insert or update
     * @param merchantBean merchant
     * @return 更改结果
     */
    Boolean setMerchantInfo(String type, MerchantBean merchantBean);

    /**
     * 根据ID查询商户信息
     *
     * @param merchantId ID
     * @return 商户信息
     */
    MerchantBean getMerchantInfoById(int merchantId);

    /**
     * 根据类型查询商户信息
     *
     * @param type 类型
     * @return list
     */
    List<MerchantBean> selectMerchantInfoByType(String type);

    /**
     * 获取所有service类型
     *
     * @return list
     */
    List<ServiceTypeBean> getAllServiceType();

    /**
     * 添加新的service类型
     *
     * @param serviceTypeBean serviceBean
     * @return 执行结果
     */
    Boolean setNewServiceType(ServiceTypeBean serviceTypeBean);

    /**
     * 更改serviceT类型
     *
     * @param serviceTypeBean serviceTypeBean
     * @return 执行结果
     */
    Boolean updateServiceType(ServiceTypeBean serviceTypeBean);

    /**
     * 根据ID删除service
     *
     * @param serviceId ID
     * @return 执行结果
     */
    Boolean deleteServiceType(int serviceId);

    /**
     * 获取所有预约订单数据
     *
     * @return list列表
     */
    List<ServiceOrderBean> getAllServiceOrder();

    /**
     * 添加新的预约订单
     *
     * @param serviceOrderBean serviceOrderBean
     * @return 执行结果
     */
    Boolean setNewServiceOrder(ServiceOrderBean serviceOrderBean);

    /**
     * 更改预约订单信息
     *
     * @param serviceOrderBean serviceOrderBean
     * @return 执行结果
     */
    Boolean updateServiceOrder(ServiceOrderBean serviceOrderBean);

    /**
     * 更改预约订单状态接口
     *
     * @param serviceOrderId
     * @return
     */
    Boolean updateServiceStatus(int serviceOrderId, String status);

    /**
     * 根据ID删除预约订单信息
     *
     * @param serviceOrderId id
     * @return 执行结果
     */
    Boolean deleteServiceOrder(int serviceOrderId);

    /**
     * 根据ID获取预约订单详细信息
     * @param statusId statusId
     * @param serviceOrderId 订单ID
     * @return serviceOrderBean
     */
    ServiceOrderBean getServiceOrderDetailInfo(int statusId, int serviceOrderId);

    /**
     * 获取不同状态和服务类型的订单
     *
     * @param statusId    状态值
     * @param serviceType 服务类型
     * @return list
     */
    List<ServiceOrderBean> getDiffStatusAndTypeServiceOrder(int statusId, String serviceType);

    /**
     * 获取当前周需要付费的商户
     * @param times 查询次数
     * @param payWeek 当前周
     * @return list
     */
    List<MerchantPaDetailInfo> getMerchantNeedPay(String times, String payWeek);

    /**
     * 更改商户缴费记录
     * @param mpayId 缴费记录ID
     * @return 执行结果
     */
    Boolean setMerchantPayRecord(int mpayId);
}
